home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / asmutil / hdsource.zip / SCRMGR.ASM < prev    next >
Assembly Source File  |  1986-05-17  |  40KB  |  1,152 lines

  1.      PAGE     86,132            ;PAGE WIDTH, LENGTH
  2.      TITLE     SCREEN INPUT/OUTPUT MANAGER
  3. ; *********************************************************************
  4. ; *                                      *
  5. ; *     AUTHOR:     JIM BRACKING                      *
  6. ; *     MODULE NAME:     SCRMGR                       *
  7. ; *     VERSION:     1:0                          *
  8. ; *     DECRIPTION:     THIS MODULE IS CALLED BY OTHER PROGRAMS TO   *
  9. ; *             PERFORM THE FOLLOWING FUNCTION:          *
  10. ; *                                      *
  11. ; *             1: SCREEN WRITES.                  *
  12. ; *             2: SCREEN INPUT AND EDITING.              *
  13. ; *                                      *
  14. ; *             ALL SCREEN WRITES ARE DIRECT TO THE VIDEO    *
  15. ; *             RAM.                          *
  16. ; *                                      *
  17. ; *     PARAMETERS:     AH = FUNCTION CODE                  *
  18. ; *                                      *
  19. ; *             00 = SCREEN WRITE                  *
  20. ; *             01 = SCREEN INPUT                  *
  21. ; *             02 = SET BORDER COLOR                  *
  22. ; *                AL = BORDER COLOR                  *
  23. ; *             03 = CLEAR THE SCREEN                  *
  24. ; *                AL = ATTRIBUTE                  *
  25. ; *                BH = STARTING ROW                  *
  26. ; *                BL = STARTING COLUMN              *
  27. ; *                CH = ENDING ROW                  *
  28. ; *                CL = ENDING COLUMN                  *
  29. ; *             04 = SCROLL SCREEN UP 1 LINE              *
  30. ; *                AL = ATTRIBUTE                  *
  31. ; *                BH = STARTING ROW                  *
  32. ; *                BL = STARTING COLUMN              *
  33. ; *                CH = ENDING ROW                  *
  34. ; *                CL = ENDING COLUMN                  *
  35. ; *             05 = WRITE CHARACTER                  *
  36. ; *                AL = ATTRIBUTE                  *
  37. ; *                BH = ROW                      *
  38. ; *                BL = COLUMN                   *
  39. ; *                CH = CHARACTER                  *
  40. ; *                CL = COUNT                      *
  41. ; *                                      *
  42. ; *                                      *
  43. ; *             ES:BX = POINTER TO PARAMETER LIST USED FOR   *
  44. ; *                 SCREEN INPUT/OUTPUT              *
  45. ; *                                      *
  46. ; *     OUTPUTS:     AH = CURSOR POSITION IN CURRENT ENTRY          *
  47. ; *             AL = RETURN CODE                  *
  48. ; *                  FF = ERROR                  *
  49. ; *                  NN = EXTENDED KEY CODE              *
  50. ; *             BX = OFFSET OF CURRENT ENTRY              *
  51. ; *                                      *
  52. ; *********************************************************************
  53. ;
  54. ; *********************************************************************
  55. ; *              LET THE OTHERS KNOW ABOUT US              *
  56. ; *********************************************************************
  57.      PUBLIC  SCRMGR
  58. ;
  59.      IF1
  60.      INCLUDE SCRNWORK.MAC
  61.      ENDIF
  62. ;
  63. ;
  64. CSEG     SEGMENT PUBLIC 'CODE'
  65.      ASSUME  CS:CSEG
  66. SCRMGR     PROC     NEAR
  67.      PUSH     AX               ;SAVE AX
  68.      PUSH     BX               ;SAVE BX
  69.      PUSH     CX               ;SAVE CX
  70.      PUSH     DX               ;SAVE DX
  71.      PUSH     DI               ;SAVE DI
  72.      PUSH     SI               ;SAVE SI
  73.      PUSH     DS               ;SAVE DS
  74.      PUSH     ES               ;SAVE ES
  75.      PUSH     BP               ;SAVE BP
  76.      PUSH     AX               ;SAVE AX
  77.      PUSH     CS               ;ESTABLISH
  78.      POP     DS               ;  DATA
  79.      ASSUME  DS:CSEG           ;    SEGMENT
  80.      JMP     BY_INFO           ;JMP AROUND COPYRIGHT
  81.      DB     'COPYRIGHT (C) ATI 1984 '
  82.      DB     'PROGRAM - SCRMGR '
  83.      DB     ' VERSION 1.10  11/20/84'
  84. ;
  85.      INCLUDE SCRNWORK.ASM
  86. ;
  87. ; *********************************************************************
  88. ; *                                      *
  89. ; *                GENERAL WORK AREAS                  *
  90. ; *                                      *
  91. ; *********************************************************************
  92. WORK_IN  LABEL     BYTE               ;WORK AREA
  93. ROW     DB     0               ;CURRENT ROW
  94. COL     DB     0               ;CURRENT COLUMN
  95. ENTSEG     DW     0               ;SEGMENT OF PARM ENTRY
  96. ENTOFF     DW     0               ;OFFSET OF PARM ENTRY
  97. PARMSEG  DW     0               ;PARM SEGMENT
  98. PARMOFF  DW     0               ;PARM OFFSET
  99. SW1     DB     0               ;SWITCH1 INDICATORS
  100. CAPS     EQU     080H               ;CAPS ON
  101. INS     EQU     040H               ;INSERT ACTIVE
  102. COLOR     EQU     020H               ;COLOR MONITOR
  103. MONO     EQU     010H               ;MONOCHROME MONITOR
  104. XLIST     EQU     008H               ;LIST REQUEST
  105. ADV     EQU     004H               ;ENHANCED GRAFICS ADAPTER
  106. NORM_CUR DW     0               ;NORMAL CURSOR
  107. WIDE_CUR DW     0               ;WIDE CURSOR
  108. SW2     DB     0               ;SPECIAL CHARACTER SWITCH
  109. DP     EQU     080H               ;DECIMAL POINT
  110. MS     EQU     040H               ;MINUS SIGN
  111. RETURN     DB     0               ;RETURN CODE
  112. CURPOS     DB     0               ;CURSOR POSITION FOR THIS ENTRY
  113. ;
  114. ; **********************************************************************
  115. ; *                                       *
  116. ; *             EXTENDED KEY TABLE                   *
  117. ; *                                       *
  118. ; **********************************************************************
  119. EX_KEY     LABEL     BYTE
  120.      DB     132 DUP(0)
  121.      ORG     $-132
  122.      ORG     EX_KEY+15
  123.      DB     TL_INDEX           ;TAB LEFT
  124.      ORG     EX_KEY+59
  125.      DB     0FFH,0FFH,0FFH,0FFH,0FFH   ;FUNCTION KEYS 1 TO 5
  126.      DB     0FFH,0FFH,0FFH,0FFH,0FFH   ;FUNCTION KEYS 6 TO 10
  127.      ORG     EX_KEY+71
  128.      DB     HO_INDEX           ;HOME KEY
  129.      ORG     EX_KEY+72
  130.      DB     CU_INDEX           ;CURSOR UP
  131.      ORG     EX_KEY+73
  132.      DB     0FFH               ;PAGE UP
  133.      ORG     EX_KEY+75
  134.      DB     CL_INDEX           ;CURSOR LEFT
  135.      ORG     EX_KEY+77
  136.      DB     CR_INDEX           ;CURSOR RIGHT
  137.      ORG     EX_KEY+79
  138.      DB     0FFH               ;END
  139.      ORG     EX_KEY+80
  140.      DB     CD_INDEX           ;CURSOR DOWN
  141.      ORG     EX_KEY+81
  142.      DB     0FFH               ;PAGE DOWN
  143.      ORG     EX_KEY+82
  144.      DB     IN_INDEX           ;INSERT
  145.      ORG     EX_KEY+83
  146.      DB     DE_INDEX           ;DELETE
  147.      ORG     EX_KEY+84
  148.      DB     0FFH,0FFH,0FFH,0FFH,0FFH   ;FUNCTION KEYS 11 TO 15
  149.      DB     0FFH,0FFH,0FFH,0FFH,0FFH   ;FUNCTION KEYS 16 TO 20
  150.      ORG     EX_KEY+94
  151.      DB     0FFH,0FFH,0FFH,0FFH,0FFH   ;FUNCTION KEYS 21 TO 25
  152.      DB     0FFH,0FFH,0FFH,0FFH,0FFH   ;FUNCTION KEYS 26 TO 30
  153.      ORG     EX_KEY+104
  154.      DB     0FFH,0FFH,0FFH,0FFH,0FFH   ;FUNCTION KEYS 31 TO 35
  155.      DB     0FFH,0FFH,0FFH,0FFH,0FFH   ;FUNCTION KEYS 36 TO 40
  156.      ORG     EX_KEY+132
  157. ; **********************************************************************
  158. ; *                                       *
  159. ; *        TRANSLATE TABLE FOR GET_INPUT ROUTINE               *
  160. ; *                                       *
  161. ; **********************************************************************
  162. TRANTBL  LABEL     BYTE
  163.      DB     128 DUP(0)
  164.      ORG     $-128
  165.      DB     0FFH,0FFH,0FFH
  166.      DB     CB_INDEX           ;CONTROL BREAK
  167.      DB     0FFH,0FFH,0FFH,0FFH
  168.      DB     0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
  169.      DB     0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
  170.      DB     0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
  171.      ORG     TRANTBL+08
  172.      DB     BS_INDEX           ;BACKSPACE
  173.      ORG     TRANTBL+09
  174.      DB     TR_INDEX           ;TAB RIGHT
  175.      ORG     TRANTBL+13
  176.      DB     EN_INDEX           ;ENTER
  177.      ORG     TRANTBL+27
  178.      DB     ES_INDEX           ;ESC KEY
  179.      ORG     TRANTBL+126
  180.      DB     0FFH,0FFH
  181. ; *********************************************************************
  182. ; *                                      *
  183. ; *                                      *
  184. ; *                                      *
  185. ; *********************************************************************
  186. BY_INFO:
  187.      CMP     CS:VI_BASE,0           ;INIT COMPLETE??
  188.      JE     INIT               ;NO
  189.      JMP     INIT_20           ;YES
  190. INIT:
  191.      XOR     AH,AH               ;SET B&W
  192.      MOV     AL,2               ;  80 COLUMN
  193.      INT     10H               ;DO IT
  194.      MOV     AH,05H            ;SET ACTIVE
  195.      XOR     AL,AL               ;  PAGE TO ZERO
  196.      INT     10H               ;DO IT
  197.      INT     11H               ;GET CONFIGURATION
  198.      AND     AL,30H            ;ONLY INTERESTED IN VIDEO SWITCHES
  199.      PUSH     CX               ;SAVE CX
  200.      MOV     CL,4               ;SHIFT COUNT
  201.      SHR     AL,CL               ;ALIGN IT
  202.      POP     CX               ;RESTORE CX
  203.      CMP     AL,00H            ;ENHANCED ADAPTER??
  204.      JNE     INIT_00A           ;NO
  205.      MOV     CS:VI_BASE,0B800H     ;ENHANCED ADAPTER
  206.      MOV     AL,CS:SW1           ;INDICATE
  207.      OR     AL,ADV            ;ENHANCED ADAPTER
  208.      MOV     CS:SW1,AL
  209.      MOV     AX,000BH           ;WIDE CURSOR
  210.      MOV     CS:WIDE_CUR,AX        ;AND SAVE IT
  211.      MOV     AX,0B0CH           ;NORMAL CURSOR
  212.      MOV     CS:NORM_CUR,AX        ;AND SAVE IT
  213.      JMP     INIT_10           ;CONTINUE
  214. INIT_00A:
  215.      CMP     AL,03H            ;MONOCHROME??
  216.      JNE     INIT_05           ;NO - MUST BE COLOR
  217.      MOV     CS:VI_BASE,0B000H     ;MONOCHROME BASE ADDRESS
  218.      MOV     AL,CS:SW1           ;INDICATE
  219.      OR     AL,MONO           ;MONOCHROME MONITOR
  220.      MOV     CS:SW1,AL
  221. INIT_00:
  222.      MOV     AX,000BH           ;WIDE CURSOR
  223.      MOV     CS:WIDE_CUR,AX        ;AND SAVE IT
  224.      MOV     AX,0B0CH           ;NORMAL CURSOR
  225.      MOV     CS:NORM_CUR,AX        ;AND SAVE IT
  226.      JMP     INIT_10           ;CONTINUE
  227. INIT_05:
  228.      MOV     CS:VI_BASE,0B800H     ;COLOR BASE ADDRESS
  229.      MOV     AL,CS:SW1           ;INDICATE
  230.      OR     AL,COLOR           ;COLOR MONITOR
  231.      MOV     CS:SW1,AL
  232.      MOV     AX,0007H           ;WIDE CURSOR
  233.      MOV     CS:WIDE_CUR,AX        ;AND SAVE IT
  234.      MOV     AX,0707H           ;NORMAL CURSOR
  235.      MOV     CS:NORM_CUR,AX        ;AND SAVE IT
  236. INIT_10:
  237.      POP     AX               ;RESTORE AX
  238.      PUSH     AX               ;SAVE AX
  239. INIT_20:
  240.      MOV     CS:ENTOFF,BX           ;SAVE FIRST ENTRY
  241.      MOV     CS:RETCODE,0           ;ZERO RETURN CODE
  242.      MO